package com.sh.泛微;

import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.stream.Collectors;

/**
 * @Auther: sh
 * @Version 1.0
 * @Description:
 */
public class ArrayList相关 {
    public static void main(String[] args) {
        // 1.ArrayList的初始长度
        // 初始长度是10               阈值是就是当前的容量    每次扩容1.5倍
        // hashmap的初始长度16        阈值0.75             扩容2倍
        ArrayList<Object> list1 = new ArrayList<>();


        // 2.ArrayList 排序的常用方式
        // 2.1: 默认升序排序（基本类型）
        List<Integer> list2_1 = new ArrayList<>(Arrays.asList(3, 1, 5, 2));
        Collections.sort(list2_1);
        System.out.println(list2_1);  // 输出：[1, 2, 3, 5]
        // 2.2：自定义排序（Comparator）
        List<String> list2_2 = new ArrayList<>(Arrays.asList("apple", "kiwi", "banana"));
        list2_2.sort((a, b) -> Integer.compare(a.length(), b.length()));
        list2_2.sort(new Comparator<String>() {
            @Override
            public int compare(String a, String b) {
                return Integer.compare(a.length(), b.length());
            }
        });


        System.out.println(list2_2);  // 输出：[kiwi, apple, banana]
        // 2.3：自定义排序（Lambda表达式）
        List<Integer> list2_3 = Arrays.asList(3, 1, 5, 2);
        List<Integer> sorted = list2_3.stream()
                .sorted()
                .collect(Collectors.toList());
        System.out.println(sorted);  // 输出：[1, 2, 3, 5]



        // 3.Arraylist<sring>中怎么去除 包含 a 的元素
        // 3.1: 使用removeIf方法
        List<String> list3_1 = new ArrayList<>(Arrays.asList("apple", "banana", "cherry", "pear"));
        list3_1.removeIf(s -> s.contains("a"));
        System.out.println(list3_1);  // 输出：[cherry]
        // 3.2: 使用stream和filter
        List<String> list3_2 = Arrays.asList("apple", "banana", "cherry", "pear");
        list3_2 = list3_2.stream()
                .filter(s -> !s.contains("a"))
                .collect(Collectors.toList());
        System.out.println(list3_2);  // 输出：[cherry]
        // 3.3: 使用迭代器
        List<String> list3_3 = new ArrayList<>(Arrays.asList("apple", "banana", "cherry", "pear"));
        Iterator<String> iterator = list3_3.iterator();
        while (iterator.hasNext()) {
            if (iterator.next().contains("a")) {
                iterator.remove();
            }
        }




    }

}

